;	������ ���������
Sector	times	16	db	10h
	times	16	db	11h
	times	16	db	12h
	times	16	db	13h
	times	16	db	14h
	times	16	db	15h
	times	16	db	16h
	times	16	db	17h
	times	16	db	18h
	times	16	db	19h
	times	16	db	1Ah
	times	16	db	1Bh
	times	16	db	1Ch
	times	16	db	1Dh
	times	16	db	1Eh
	times	16	db	1Fh
Address	dw	100h
;-----------------------------------------------------------------------
;	���������� �� ����� ������ (256 ����)
;	-------------------------------------
; ������: Disp_line, Send_crlf
;
Disp_sector:                    
	call	Clear_screen		;������� ������
	Out_str	ReferenceLine		;������� ������� ���������
	call	Send_crlf		;������� ������ ������
	call	Send_crlf		; -"-
	call	Send_crlf		; -"-
	call	Send_crlf		; -"-
	xor	dx,dx			;������ Sector
	mov	cx,16			;����� ����� 16
.M:	call	Disp_line		;����� ������
	call	Send_crlf		;������� ������
	add	dx,16			;����� ������� ����� ��������� ������
	loop	.M			;�������� ����� �����
	ret
ReferenceLine	db	'F1-start|F2-record|F3-next|F4-edit|F5-previous|F6-arbitary|F10-end$'
;
;	��������� ��������� 16 ���� ������ � ���� ������
;			����������������� �����
;	------------------------------------------------
; �����: DX - ����� ������� ����� ������ � Sector
; ������: Write_hex, Write_char
; ������: Sector
;
Disp_line:
	push	bx
	push	cx
	push	dx              
	mov	bx,dx			;� BX ����� ������� �����
	add	dx,[Address]    	;����� ������ �������
	call	Write_word_hex		; ����� ������
	mov	dl,' '			;����� �� �����
	call	Write_char		; �������
	mov	cx,16			;������� ������
	push	bx			;�������� ����� ������� �����
.M1:	mov	dl,[Sector+bx]		;�������� ���� ����
	call	Write_byte_hex		;����� ������������������ �����
	mov	dl,' '			;����� �� �����
	call	Write_char		; �������
	inc	bx			;������� �� ���������
	loop	.M1			; ������
	pop	bx			;������� ����� ������� �����
	mov	cx,16			;������� ������
.M2:	mov	dl,[Sector+bx]		;�������� ���� ����
	call	Write_char		;������� ������ �� �����
	inc	bx			;������� �� ���������
	loop	.M2			; ������
	pop	dx
	pop	cx
	pop	bx
	ret
;
;	�������� � ���������� Sector ���������� ������� ������, ���������
;			����� �������� � ���������� Address
;	-----------------------------------------------------------------
;
Read_sector:
	push	cx
	push	si
	push	di              
	pushf				;��������� ���� ����������� DF
	mov	si,[Address]		;������ ����������
	mov	di,Sector		;���� ����������
	cld				;�������� ���� DF
	mov	cx,256			;� �������� ����� ����
rep	movsb				;��������� ������� ������
	popf				;�������������� ����� DF
	pop	di
	pop	si
	pop	cx
	ret
;
;	�������� � ���������� Sector ��������� ������ �������� ������ ���������,
;			�������� 0 � ���������� Address
;	------------------------------------------------------------------------
;
Init_sector:
	mov	[Address],word 0	;�������� 0 � ���������� Address
	call	Read_sector		;�������� ���������� ������� ������ � ������� 0
	call    Disp_sector		;������� ������ �� �����
	ret
;
;	�������� � ���������� Sector ���������� ������ �������� ������ ���������,
;		�������� ��������� ����� ����� ������� � ���������� Address
;	-------------------------------------------------------------------------
;
Prev_sector:
	push	bx
	mov	bx,[Address]		;�������� ����� � ������� BX
	or	bx,0            	;���� ����� ����� 0
	jz	.M			; �� ������ �� ������
	sub	bx,100h         	;��������� �����
	mov	[Address],bx		; �� 256
.M:	call	Read_sector     	;�������� ������ ������ � ����� �������
	call	Disp_sector		;������� ������ �� �����
	pop	bx
	ret
;
;	�������� � ���������� Sector ��������� ������ �������� ������ ���������,
;		�������� ��������� ����� ����� ������� � ���������� Address
;	-------------------------------------------------------------------------
;
Next_sector:
	push	bx
	mov	bx,[Address]		;�������� ����� � ������� BX
	cmp	bx,0FF00h		;���� ����� ����� 65280
	jz	.M			; �� ������ �� ������
	add	bx,100h         	;����������� �����
	mov	[Address],bx		; �� 256
.M:	call	Read_sector		;�������� ������ ������ � ����� �������
	call	Disp_sector		;������� ������ �� �����
	pop	bx
	ret
;
;	�������� � ���������� Sector N-� ������ �������� ������ ���������,
;		�������� ��������� ����� ����� ������� � ���������� Address
;	-------------------------------------------------------------------
;
N_sector:
	push	bx
	call	Send_crlf		;������� ������
	Out_str	HeaderInputSector	;������� ���������
	call	Read_byte_hex		;��������� ���������� ����������������� �����
	shl	bx,8			;�������� ����� �� 8 ��������
	mov	[Address],bx		;�������� ����� �����
	call	Read_sector		;�������� ������ ������ � ����� �������
	call	Disp_sector		;������� ������ �� �����
	pop	bx
	ret
HeaderInputSector db	'Input number Sector: $'
%include	'Video_io.asm'	;������������� ��������	
%include	'Cursor.asm'	; -"-
%include	'Kbd_io.asm'	; -"-